Data communication systems exchange user data to provide various services like media streaming, audio/video conferencing, data messaging, and internet access. The data communication systems use several communication protocols to transfer the user data. Exemplary communication protocols include Long Term Evolution (LTE), IEEE 802.3 (Ethernet), IEEE 802.11 (Wi-Fi), and Internet Protocol (IP). Within a given communication protocol, there may be multiple underlying communication protocols. For example, an LTE data packet using the LTE protocol uses underlying protocols like Media Access Control (MAC), Radio Link Control (RLC), and Packet Data Convergence Protocol (PDCP).
To improve efficiency, data communication systems perform data compression on user data. The data compression process removes redundant and unnecessary aspects of the user data and a reciprocal decompression process rebuilds the original data. In a simplified compression example, a string of ten all-zero bits could be replaced by a special three-bit code at the compressor, and then the ten all-zero bits would be re-inserted for the three-bit code at the decompressor.
Some forms of data compression transfer only changes to a data set instead of repeatedly transferring the complete and modified data set. For example, video compression technologies often transfer a complete image and then transfer modifications to the image instead of transferring the complete modified image. In another example, voice compressors drop silence data (white noise) and the voice decompressor automatically regenerates white noise at the receiver.
Robust Header Compression (RoHC) is a common form of packet header compression. RoHC is typically used to efficiently transmit wireless data communication packets over the air. RoHC initializes by transferring full headers. In first order RoHC, header differences are transferred instead of full headers. In second order RoHC, sequence numbers and checksums are transferred instead of header differences. RoHC decompressors infer and retrieve stored header data based on the sequence numbers and checksums.
RoHC compressors and decompressors each comprise multiple state machines, and each state machine usually handles a particular protocol. For example, an LTE RoHC compressor and decompressor each have a MAC state machine, RLC state machine, and PDCP state machine. The RoHC state machines run in parallel at the transmitter and receiver, but they typically process a given data packet in series. The data packet is processed one state machine at a time as the outer headers are initially processed by the pertinent state machines before the inner headers are processed other state machines for the inner protocols.
The state machines generate Machine Output (MO) data that indicates header data. The state machines also generate Interdependent MO (IMO) data that represents a data dependency between state machines. For example, an RLC state machine in a transmitter may send IMO data to a PDCP state machine in the same transmitter. The proper operation of this PDCP state machine depends on the IMO data from the RLC state machine. In another example, the PDCP state machine in the transmitter may send IMO data to a PDCP state machine in receiver. The proper operation of the PDCP state machine in the receiver depends on the IMO data from the PDCP state machine in the transmitter. In addition to IMO data, the state machines also receive external data. For example, the state machines may receive a metric like packet length from an Analog-to-Digital (A/D) convertor. The state machines may infer some data from the MO data or the external data. For example, a header size could be readily inferred from the packet size minus the payload size.
Unfortunately, current packet header compression technologies like RoHC have not been properly optimized for their underlying protocols and media services. Packet header compression for services like Voice over LTE (VoLTE) remains inefficient.
Technical Overview
A data communication system having a transmitter and a receiver performs packet header compression. The transmitter executes state machines to process a data packet and determine if a transmitter state machine is transferring Interdependent Machine Output (IMO) data. The transmitter generates an IMO vector that indicates if any IMO data is in the data packet. If IMO is present, then the transmitter augments the IMO vector to indicate the individual transmitter state machines that transferred the IMO data. The transmitter transfers the data packet with the IMO vector to the receiver. The receiver processes the IMO vector to determine if any IMO data is in the data packet. If IMO data is transferred, then the receiver processes the augmented IMO vector to transfer the IMO data to the individual receiver state machines that correspond to the transmitter state machines that transferred the IMO data.